package cn.com.bluemoon.daps.model.service;

import cn.com.bluemoon.daps.common.domain.ResultBean;
import cn.com.bluemoon.daps.common.enums.DatabaseType;
import cn.com.bluemoon.daps.common.mp.IBmService;
import cn.com.bluemoon.daps.model.dto.FieldStandardDto;
import cn.com.bluemoon.daps.model.dto.ModelTableInfoDto;
import cn.com.bluemoon.daps.model.entity.DapDataModelTableField;
import cn.com.bluemoon.daps.model.vo.InsertModelTableFieldVo;
import cn.com.bluemoon.daps.model.vo.RelationIdsVo;

import java.util.List;

/**
 * <p>
 * 数据模型-模型中设计表-字段的表 服务类
 * </p>
 *
 * @author admin
 * @since 2020-08-03
 */
public interface DapDataModelTableFieldService extends IBmService<DapDataModelTableField> {

    /**
     * 通过模型表id获得字段列表
     * @param id
     * @return
     */
    List<FieldStandardDto> getFieldList(String id);

    /**
     * 获得表及字段信息
     * @param modelTableId
     * @return
     */
    ModelTableInfoDto getTableInfo(String modelTableId);

    /**
     * 删除备份的字段
     * @param modelId
     */
    void deleteField(String modelId);

    /**
     * 引用
     * @param result
     */
    Boolean useStandard(RelationIdsVo result);

    /**
     * 批量新增字段
     * @param fields
     * @param databaseType 数据库类型
     * @return
     */
    ResultBean<Boolean> insertField(InsertModelTableFieldVo fields, DatabaseType databaseType);

    /**
     * 分页方式获取对应条件的所有数据
     *
     * @param modelId 模id
     * @param newest true 最新 f 历史
     * @return 所有
     */
    List<DapDataModelTableField> findAllByPageByModelIdAndNewest(String modelId, boolean newest);

    /**
     * 字段重新排序
     * @param tableId
     */
    void fieldRank(String tableId);

    /**
     * 处理删除再新建相同字段情况
     * @param tableId
     * @param fieldName
     * @return
     */
    String getRenewField(String tableId, String fieldName);
}
